uname関数は、稼動中のシステム(コンピュータとOS)に関する情報を取得します。
この関数は、C言語のライブラリ関数(標準関数)ではありませんので、コンパイラにより、使えない場合があります。
#include <sys/utsname.h>
int uname(struct utsname *buf);
*bufは取得した状態を格納するutsname構造体を指定します。
戻り値として、処理が成功した場合は0が、エラーの場合は-1を返します。
utsname構造体は、次のメンバにより構成されています。(各メンバは文字列(char型の配列)です。)
メンバ名 | 内容 |
---|---|
sysname | OS(カーネル)の名称です。 |
nodename | ホスト名称です。 |
release | OS(カーネル)のリリース番号です。 |
version | OS(カーネル)のバージョンです。 |
machine | コンピュータ(ハードウェア)の種類です。 |
プログラム 例
#include <stdio.h> #include <sys/utsname.h> int main() { struct utsname uname_buff; if (uname(&uname_buff) == 0) { /* システム情報を表示 */ printf('OSの名称 : %s\n',uname_buff.sysname); printf('ホスト名称 : %s\n',uname_buff.nodename); printf('OSのリリース番号 : %s\n',uname_buff.release); printf('OSのバージョン : %s\n',uname_buff.version); printf('コンピュータ(ハードウェア)の種類 : %s\n',uname_buff.machine); } else { perror('main '); } return 0; }
例の実行結果
$ uname -a Linux 10.1.168.192.in-addr.arpa 2.6.25.11-60.fc8 #1 SMP Mon Jul 21 02:06:29 EDT 2008 i686 i686 i386 GNU/Linux $ $ ./uname.exe OSの名称 : Linux ホスト名称 : 10.1.168.192.in-addr.arpa OSのリリース番号 : 2.6.25.11-60.fc8 OSのバージョン : #1 SMP Mon Jul 21 02:06:29 EDT 2008 コンピュータ(ハードウェア)の種類 : i686 $